package com.cl.cloud.auth.service;

import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;

import javax.sql.DataSource;

/**
 * @description: 自定义客户端信息获取服务类
 * @author: liuzijian
 * @time: 2022-05-10 14:08
 */
public class CustomClientDetailsServiceImpl extends JdbcClientDetailsService {

    public CustomClientDetailsServiceImpl(DataSource dataSource) {
        super(dataSource);
    }

    /**
     * 缓存客户端信息
     *
     * @param clientId 客户端id
     */
    @Override
    public ClientDetails loadClientByClientId(String clientId) {
        /**
         * TODO 这里可以缓存ClientDetails的信息 用redis或者任意的方式去缓冲，这样每次用户请求登录就不需要查询数据库（oauth_client_details）
         */
        try {
            return super.loadClientByClientId(clientId);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

}
